package com.itheima.ydd.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.ydd.common.R;
import com.itheima.ydd.common.ResultData;
import com.itheima.ydd.entity.YddTag;
import com.itheima.ydd.service.IYddTagService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author author
 * @since 2022-05-22
 */
@Slf4j
@RestController
@RequestMapping("/ydd_tag")
public class YddTagController {

    @Autowired
    private IYddTagService yddTagService;


    /**
     * 标签详情
     * @param id
     * @return
     */
    @GetMapping("/rowInfo")
    public R getById(Integer id){
        YddTag yddTag = yddTagService.getById(id);
        R r = R.success("ydd-tag", "object");
        HashMap<String , Object> map = new HashMap<>();
        map.put("id",yddTag.getId());
        map.put("tagname",yddTag.getTagname());
        map.put("default_data",yddTag.getDefaultData());
        r.setData(map);
        return r;

    }

    /**
     * 修改标签
     * @param yddTag
     * @return
     */
    @PostMapping("/update")
    public R update(@RequestBody YddTag yddTag){
        LambdaQueryWrapper<YddTag> lqw = new LambdaQueryWrapper<>();
        lqw.eq(YddTag::getId,yddTag.getId());
        yddTagService.update(yddTag,lqw);
       return R.success("updata","修改标签成功");

    }

    /**
     * 添加标签
     * @param yddTag
     * @return
     */
    @PostMapping("/add")
    public ResultData add(@RequestBody YddTag yddTag){

        LambdaQueryWrapper<YddTag> lqw = new LambdaQueryWrapper<>();
        lqw.eq(YddTag::getTagname,yddTag.getTagname());
        int count = yddTagService.count(lqw);
        if (count>0){
            //return R.error("标签重复");
            return ResultData.error("标签重复");
        }
        yddTagService.save(yddTag);
        return ResultData.ok("","");
    }

    /**
     * 删除标签
     * @param id
     * @return
     */
    @GetMapping("/del")
    public R delete(Integer id){
        yddTagService.removeById(id);
        return R.success("del","删除标签成功");
    }

    /**
     * 分页标签
     * @param tagname
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public R page(@RequestParam String tagname,@RequestParam String page,@RequestParam String limit){
        log.info(page+"--"+limit);
        //创建分页构造器
        Page<YddTag> yddTagPage = new Page<>(Integer.parseInt(page),Integer.parseInt(limit));
        LambdaQueryWrapper<YddTag> lqw = new LambdaQueryWrapper<>();
        lqw.like(StringUtils.isNotEmpty(tagname),YddTag::getTagname,tagname);
        lqw.orderByDesc(YddTag::getId);
        yddTagService.page(yddTagPage,lqw);

        R r = R.success("count", yddTagPage.getTotal());
        r.putData("totalPages",yddTagPage.getPages());
        r.putData("pageSize",limit);
        r.putData("currentPage",page);
        r.putData("data",yddTagPage.getRecords());
        return r;

    }


    /**
     * 全部
     * @return
     */
    @GetMapping("/all")
    public ResultData all(){
        List<YddTag> yddTags = yddTagService.list();

        return ResultData.ok("all",yddTags);
    }


}
